package service.Impl;

import enmu.OrderStatus;
import model.Order;
import service.IOrderRepositoryService;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class OrderRepositoryServiceImpl implements IOrderRepositoryService {
    /**
     * 用ConcurrentHashMap存储订单数据，key是订单id，value是订单对象
     * static修饰保证全局唯一，ConcurrentHashMap保证线程安全
     */
    public static final Map<String,Order> orderMap = new ConcurrentHashMap<>();

    @Override
    /**
     * 保存订单到内存空间
     * @param order 保存的订单对象
     */
    public Order save(Order order) {
        //key为订单id，value为订单对象
        orderMap.put(order.getOrderId(),order);
        return order;
    }

    /**
     * 根据订单ID查询订单
     * @param orderId 订单id
     * @return 对应的订单对象(order)，不存在返回null
     */
    @Override
    public Order findById(String orderId) {
        //从Map中获取订单(order)根据订单id
        return orderMap.get(orderId);
    }

    /**
     * 更新订单的状态
     * @param orderId 订单id
     * @param status 订单状态
     */
    @Override
    public void updateStatus(String orderId, OrderStatus status) {
    //订单是否存在
        Order order =orderMap.get(orderId);
        //更新状态
    if (order != null){
        order.setStatus(status);
    }
    }

}
